package cn.com.blueInfo.bpm.person.service;

import cn.com.blueInfo.bpm.person.request.GroupUserDTO;
import cn.com.blueInfo.bpm.person.response.GroupUserVO;
import cn.com.blueInfo.utils.result.ResultInfo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;

/**
 * 群组固定人员 业务服务类
 * @author suxch
 * @since 2025-08-24 01:39:52
 */
public interface GroupUserService {

    /**
     * 新增群组固定人员
     * @param groupUserDTO 群组固定人员参数
     */
    ResultInfo<Integer> addGroupUser(GroupUserDTO groupUserDTO);

    /**
     * 批量新增群组固定人员
     * @param groupUserDTOList 群组固定人员参数列表
     */
    ResultInfo<Integer> batchAddGroupUser(List<GroupUserDTO> groupUserDTOList);

    /**
     * 删除群组固定人员
     * @param groupUserId 群组固定人员ID
     */
    ResultInfo<Integer> removeGroupUser(Long groupUserId);

    /**
     * 批量删除群组固定人员
     * @param groupUserIdList 群组固定人员ID列表
     */
    ResultInfo<Integer> batchRemoveGroupUser(List<Long> groupUserIdList);

    /**
     * 更新部分群组固定人员
     * @param groupUserUpdatePartialDTO 群组固定人员参数
     */
    ResultInfo<Integer> modifyGroupUserPartial(GroupUserDTO.UpdatePartialDTO groupUserUpdatePartialDTO);

    /**
     * 更新全部群组固定人员
     * @param groupUserDTO 群组固定人员参数
     */
    ResultInfo<Integer> modifyGroupUser(GroupUserDTO groupUserDTO);

    /**
     * 查询一条群组固定人员
     * @param groupUserId 群组固定人员ID
     */
    ResultInfo<GroupUserVO> queryGroupUserById(Long groupUserId);

    /**
     * 分页查询群组固定人员
     * @param groupUserQueryDTO 群组固定人员参数
     */
    ResultInfo<Page<GroupUserVO>> queryGroupUserPage(GroupUserDTO.QueryDTO groupUserQueryDTO);

    /**
     * 根据条件查询 群组固定人员 数量
     * @param groupUserQueryDTO 群组固定人员参数
     */
    ResultInfo<Long> queryGroupUserCount(GroupUserDTO.QueryDTO groupUserQueryDTO);

    /**
     * 根据条件查询 群组固定人员
     * @param groupUserQueryDTO 群组固定人员参数
     */
    ResultInfo<List<GroupUserVO>> queryGroupUserList(GroupUserDTO.QueryDTO groupUserQueryDTO);

}
